SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[paObtenerTramites] 

@Descripcion VARCHAR(255) = NULL,
@Fecha VARCHAR(10) = NULL,
@Organizacion INT = NULL,
@Agente INT = NULL,
@Alumno INT = NULL,
@Solicitante VARCHAR(100) = NULL,
@Asunto INT = NULL,
@Tipo INT = NULL,
@Estado INT

AS
SET NOCOUNT ON
DECLARE @Usuario INT
DECLARE @Reparticion INT

-- Obtengo el usuario
SELECT @Usuario = IdUsuario, @Reparticion = IdReparticion FROM tb_Usuarios WHERe NTUser = SYSTEM_USER

-- Tramites Pendientes (Con Estado = 2 -En Traslado)
IF @Estado = 0 BEGIN

	SELECT IdTramite, TD.Descripcion, Numero, A.Descripcion Asunto, DescripcionSolicitante, TT.Descripcion Tipo FROM tb_TramitesDocumentos TD
		INNER JOIN tb_Tracking TR ON TD.IdTramite = TR.Tramite
		LEFT OUTER JOIN tb_AsuntosDeTramite A ON A.IdAsuntoDeTramite = TD.Asunto
		LEFT OUTER JOIN tb_Organizaciones O ON TD.OrganizacionSolicitante = O.IdOrganizaciones
		LEFT OUTER JOIN tb_Agentes AG ON AG.IdAgente = TD.AgenteSolicitante
		INNER JOIN tb_TiposDeTramites TT ON TT.IdTipoDeTramite = TD.Tipo
		WHERE TR.ReparticionDestino = @Reparticion AND TR.Estado = 2 AND (TR.Responsable = @Usuario OR TR.Responsable IS NULL)
		AND (@Descripcion IS NULL OR TD.Descripcion LIKE @Descripcion)
		AND (@Fecha IS NULL OR CONVERT(VARCHAR(10), FechaYHoraInicio, 103) = @Fecha)
		AND (@Organizacion IS NULL OR O.CUISE = @Organizacion)
		AND (@Agente IS NULL OR AG.Documento = @Agente)
		AND (@Alumno IS NULL OR TD.AlumnoSolicitante = @Alumno)
		AND (@Solicitante IS NULL OR TD.DescripcionSolicitante LIKE @Solicitante)
		AND (@Asunto IS NULL OR TD.Asunto = @Asunto)
		AND (@Tipo IS NULL OR TD.Tipo = @Tipo)

END
-- Tramites Aceptados (Con Estado = 4 -En Proceso)
IF @Estado = 1 BEGIN

	SELECT IdTramite, TD.Descripcion, Numero, A.Descripcion Asunto, DescripcionSolicitante, TT.Descripcion Tipo FROM tb_TramitesDocumentos TD
		INNER JOIN tb_Tracking TR ON TD.IdTramite = TR.Tramite
		LEFT OUTER JOIN tb_AsuntosDeTramite A ON A.IdAsuntoDeTramite = TD.Asunto
		LEFT OUTER JOIN tb_Organizaciones O ON TD.OrganizacionSolicitante = O.IdOrganizaciones
		LEFT OUTER JOIN tb_Agentes AG ON AG.IdAgente = TD.AgenteSolicitante
		INNER JOIN tb_TiposDeTramites TT ON TT.IdTipoDeTramite = TD.Tipo
		WHERE TR.ReparticionDestino = @Reparticion AND TR.Estado = 4 AND (TR.Responsable = @Usuario OR TR.Responsable IS NULL)
		AND (@Descripcion IS NULL OR TD.Descripcion LIKE @Descripcion)
		AND (@Fecha IS NULL OR CONVERT(VARCHAR(10), FechaYHoraInicio, 103) = @Fecha)
		AND (@Organizacion IS NULL OR O.CUISE = @Organizacion)
		AND (@Agente IS NULL OR AG.Documento = @Agente)
		AND (@Alumno IS NULL OR TD.AlumnoSolicitante = @Alumno)
		AND (@Solicitante IS NULL OR TD.DescripcionSolicitante LIKE @Solicitante)
		AND (@Asunto IS NULL OR TD.Asunto = @Asunto)
		AND (@Tipo IS NULL OR TD.Tipo = @Tipo)

END

-- Tramites Devueltos
IF @Estado = 2 BEGIN
	PRINT('SIN IMPLEMENTAR')
END

-- Tramites Resueltos
IF @Estado = 3 BEGIN
	PRINT('SIN IMPLEMENTAR')
END

-- Tramites Finalizados
IF @Estado = 4 BEGIN
	
	SELECT IdTramite, TD.Descripcion, TD.Numero, A.Descripcion Asunto, DescripcionSolicitante, TT.Descripcion Tipo FROM tb_TramitesDocumentos TD
		LEFT OUTER JOIN tb_AsuntosDeTramite A ON A.IdAsuntoDeTramite = TD.Asunto
		LEFT OUTER JOIN tb_Organizaciones O ON TD.OrganizacionSolicitante = O.IdOrganizaciones
		LEFT OUTER JOIN tb_Agentes AG ON AG.IdAgente = TD.AgenteSolicitante
		INNER JOIN tb_TiposDeTramites TT ON TT.IdTipoDeTramite = TD.Tipo
		WHERE TD.Estado = 6
		AND (@Descripcion IS NULL OR TD.Descripcion LIKE @Descripcion)
		AND (@Fecha IS NULL OR CONVERT(VARCHAR(10), FechaYHoraInicio, 103) = @Fecha)
		AND (@Organizacion IS NULL OR O.CUISE = @Organizacion)
		AND (@Agente IS NULL OR AG.Documento = @Agente)
		AND (@Alumno IS NULL OR TD.AlumnoSolicitante = @Alumno)
		AND (@Solicitante IS NULL OR TD.DescripcionSolicitante LIKE @Solicitante)
		AND (@Asunto IS NULL OR TD.Asunto = @Asunto)
		AND (@Tipo IS NULL OR TD.Tipo = @Tipo)

END
GO
GRANT EXECUTE ON  [dbo].[paObtenerTramites] TO [GestionDeDocumentos]
GRANT EXECUTE ON  [dbo].[paObtenerTramites] TO [SoloVer]
GO
